import common from "../../../utils/common.js";
const { clockSvgSrc, trashCanSvgSrc, downWardSvgSrc, upWardSvgSrc, hotSvgSrc } = require('../../../utils/iconSvg')

const app = getApp()
const ip = app.globalData.ipStr
Page({

    /**
     * 页面的初始数据
     */
    data: {
        // 用于控制是否显示 社区名匹配view的展示 
        showMatchComplexFlag: false,
        // 根据社区名或点击搜索分页查询结果层的展示
        showPageDataFlag: false,
        // 仅根据社区名或点击搜索分页查询时显示查询结果
        showPageDataTipFalg: false,
        // 用于控制历史搜索key的展示 
        showHistorySerachKeyFlag: false,
        // 加载时等待功能，暂不使用
        // showWaitIconFlag:false,

        // 输入的关键字
        searchKeyStr: '',
        // 根据关键字匹配的社区名
        searchKeyMatchArr: [],
        // 查询结果数组
        searchHouseArr: [],

        // 点击社区名去查询 
        complexCurrentPage: 1,
        complexPages: 1,

        // ---------------------------------------------------
        // searchKey相关参数
        searchKeyHistoryArr: [],
        omitSearchKeyHistoryArr: [],
        clockSvgSrc: clockSvgSrc('#A6A6A6'),
        trashCanSvgSrc: trashCanSvgSrc('#A6A6A6'),
        downWardSvgSrc: downWardSvgSrc('#A6A6A6'),
        upWardSvgSrc: upWardSvgSrc('#A6A6A6'),
        // 是否展示更多的 最近搜索关键词
        showMoreHistoryFlag: false,
        // 热点key
        searchKeyHotArr: [],
        omitSearchKeyHotArr: [],
        showHotSerachKeyFlag: false,
        hotSvgSrc: hotSvgSrc('#A6A6A6'),

        // 存放在筛选页选中的标签文本的字符串
        selectOptionsStr: '筛选',

        // 分页参数 搜索时用
        current: 1,
        pages: 1,
        size: 10,
        // 筛选页是否修改
        tempUpdateFlag: false,
        // 用于存放从其它页面过来时的传参type,筛选页传2，其它传0，传0时不需要调用查询函数
        tempType: 0,
    },

    /**
     * 点击 更多时，更多隐藏，展示多的最近搜索词
     * @param {更多 文本} e 
     */
    showMoreHistorySerarchKey(e) {
        var type = e.currentTarget.dataset.type;
        // collapse
        this.setData({ showMoreHistoryFlag: !this.data.showMoreHistoryFlag });
    },

    /**
     * 删除历史搜索记录
     * @param {点击垃圾箱} e 
     */
    delHistorySearchKeys(e) {
        wx.showModal({
            cancelColor: 'rgba(255, 127, 80)',
            // cancelColor: '#5796ff',
            confirmColor: '#A6A6A6',
            title: '',
            content: '确认删除最近搜索记录吗？',
            complete: (res) => {
                if (res.cancel) {
                    console.info('取消')
                }

                if (res.confirm) {
                    console.info('删除')
                    wx.request({
                        url: 'http://' + app.globalData.ipStr + '/house-rent/delHistorySearchKeys',
                        method: 'POST',
                        header: {
                            'Authorization': wx.getStorageSync("token"),
                            'content-type': 'application/json;charset=UTF-8'
                        },
                        data: {},
                        success: res => {
                            console.info('删除历史搜索记录=' + JSON.stringify(res))
                            if (res.statusCode == 200) {
                                this.setData({
                                    showHistorySerachKeyFlag: false,
                                    showMoreHistoryFlag: false, searchKeyHistoryArr: [], omitSearchKeyHistoryArr: []
                                });
                            }
                        },
                        fail: e => {
                            console.info('删除历史搜索记录异常返回信息=' + JSON.stringify(e))
                        },
                        complete: c => {
                        }
                    })
                }
            }
        })
    },

    /**
     * 根据输入关键字，批量查询社区名
     * @param {社区名} e 
     */
    getBatchComplex(e) {
        this.pickerChange(e)
        wx.setStorageSync('searchKeyStr', e.detail.value)
        if (e.detail.value.length == 0) {
            // 初始状态
            this.setData({
                // 这两个在查询 页需要
                // showPageDataFlag: false,
                // showPageDataTipFalg: false,
                showMatchComplexFlag: false,
                showHistorySerachKeyFlag: true,
                showHotSerachKeyFlag: true,
            })
        } else {
            this.doGetBatchComplex(e.detail.value);
        }
    },

    doGetBatchComplex(searchKeyStr){
        wx.request({
            url: 'http://' + ip + '/house-rent/getBatchComplex?searchKeyStr=' + searchKeyStr,
            method: 'POST',
            header: {
                'content-type': 'application/json;charset=UTF-8'
            },
            data: {},
            success: res => {
                console.info('关键字匹配社区名返回信息=' + JSON.stringify(res.data.data))
                if (res.statusCode == 200) {
                    const searchKeyMatchArr = res.data.data
                    this.setData({
                        searchKeyMatchArr: searchKeyMatchArr,
                        showMatchComplexFlag: searchKeyMatchArr.length > 0,
                        // showPageDataFlag: false,
                        // showPageDataTipFalg: false,
                        showHistorySerachKeyFlag: false,
                        showHotSerachKeyFlag: false,
                        //发生变化时，需重置分页参数
                        complexCurrentPage: 1,
                        complexPages: 1,
                        // current: 1,
                        // pages: 1,
                    })
                }
            },
            fail: e => {
                console.info('关键字匹配社区名异常返回信息=' + JSON.stringify(e))
            },
            complete: c => {
                // wx.hideLoading()
            }
        })
    },


    // 1.点击历史搜索 需要把  searchKey 传递过去
    clickHistorySearchKey(e) {
        var historySearchKeyIndex = e.currentTarget.dataset.index;
        // 这里通过索引赋值的是实际词，不是省略词
        const actralSearchKey = this.data.searchKeyHistoryArr[historySearchKeyIndex]
        this.setData({ searchKeyStr: actralSearchKey })
        var paramStr = "?searchKeyStr=" + actralSearchKey
        this.toSelectHouse(paramStr);
    },
    // 2.点击热搜地点 需要把  searchKey 传递过去
    clickHotSearchKey(e) {
        var hotSearchKeyIndex = e.currentTarget.dataset.index;
        // 这里通过索引赋值的是实际词，不是省略词
        const actralSearchKey = this.data.searchKeyHotArr[hotSearchKeyIndex]
        this.setData({ searchKeyStr: actralSearchKey })
        var paramStr = "?searchKeyStr=" + actralSearchKey
        this.toSelectHouse(paramStr);
    },
    // 3.点击筛选 需要把 输入的 searchKey 传递过去
    clickSelectBtn(e) {
        // 这里通过索引赋值的是实际词，不是省略词
        // this.setData({ searchKeyStr: this.data.searchKeyStr})
        var paramStr = "?searchKeyStr=" + this.data.searchKeyStr
        this.toSelectHouse(paramStr);
    },
    // 4.点击键盘搜索 需要把 输入的 searchKey 传递过去 // 同3
    // 5.点击匹配的社区名 需要把 选中的 searchKey 传递过去  
    clickComplexBtn(e) {
        // 这里通过索引赋值的是实际词，不是省略词
        const complexName = e.currentTarget.dataset.complex
        this.setData({ searchKeyStr: complexName })
        var paramStr = "?complex=" + complexName
        this.toSelectHouse(paramStr);
    },
    // 以上需要先给searchKey 赋值，所以如果异步先跳转的话，可以放缓存，在select的页从缓存拿
    // 并且传值参数名不再区分社区或者其它类型，后端查询时将全字匹配的结果放前面，分词匹配的放后面 todo 

    /**
      * 
      * @param {跳转到筛选页面} e 
      */
    toSelectHouse: function (paramStr) {
        var url = '/pages/nuan/select/selectHouse'
        url = '/pages/nuan/select2/select2' + paramStr;
        common.navigateTo2(url)
    },
    pickerChange: function (e) {
        this.doSetData(e.currentTarget.dataset.atr, e.detail.value)
    },

    doSetData: function (vari, val) { this.setData({ [vari]: val }) },


    getSearchKeyArr: function () {
        // 带上auth参数,查询关键字集合
        wx.request({
            url: 'http://' + ip + '/house-rent/getSearchKeyArr',
            method: 'POST',
            header: {
                'Authorization': wx.getStorageSync("token"),
                'content-type': 'application/json;charset=UTF-8'
            },
            data: {},
            success: res => {
                console.info('根据openid查询之前的搜索关键字集合返回信息=' + JSON.stringify(res.data))
                if (res.statusCode == 200) {
                    var searchKeyParam = JSON.stringify(res.data.data)
                    const searchKeyParamArr = JSON.parse(searchKeyParam);
                    this.setData({
                        searchKeyHistoryArr: searchKeyParamArr[0],
                        omitSearchKeyHistoryArr: searchKeyParamArr[1],
                        // 大于7，显示'更多'
                        showMoreHistoryFlag: searchKeyParamArr[0].length > 7,
                        showHistorySerachKeyFlag: searchKeyParamArr[0].length > 0,
                        // 热点key
                        searchKeyHotArr: searchKeyParamArr[2],
                        omitSearchKeyHotArr: searchKeyParamArr[3],
                        showHotSerachKeyFlag: searchKeyParamArr[2].length > 0,
                    })
                }
            },
            fail: e => {
                console.info('根据openid查询之前的搜索关键字集合异常返回信息=' + JSON.stringify(e))
            },
            complete: c => {
                wx.hideLoading()
            }
        })
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        console.info('preSelect页面 options=' + JSON.stringify(options))
        // 点击用户头像信息过来时，searchKeyParam是undefined 只有type=0
        if (options.type == 0) {
            // 从首页进来，不需要执行查询方法 
            this.setData({ tempType: 0 })
            wx.setStorageSync('searchDTO', { districtArr: [], rentType: null, rooms: null, rentArr: [] });
            wx.setStorageSync('complex', '')
            wx.setStorageSync('searchKeyStr', '')
        }
        this.getSearchKeyArr();
        if(options.searchKeyParam != undefined){
            this.setData({searchKeyStr:options.searchKeyParam})
            this.doGetBatchComplex(options.searchKeyParam)
        }
    
    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        // console.info('onShow--------------' + this.data.selectOptionsStr)
        // const searchDTOFromSelect = JSON.stringify(this.data.searchDTO);
        // console.info('onShow--------------' + searchDTOFromSelect)

        // 首页或其它不是筛选页的过来传0，筛选页传的2
        // 这里如果是从筛选页过来，并且有修改，确定方法中过来，则updateFlag:true,则current:1,pages:1
        // if (this.data.tempType != 0 && this.data.tempUpdateFlag) {
        //     this.setData({ current: 1, pages: 1 });
        //     this.getHouseByAllCondition()
        // }
    },
    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {
        console.info('onHide--------------')
    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {
        console.info('onUnload--------------')
        // 清空筛选页的缓存 
        const storageArr = ['tempSelectLabelData', 'districtSelectedLabelArr', 'districtSelectedValArr', 'rentTypeSelectedLabel', 'rentTypeSelectedVal', 'layoutSelectedLabel', 'layoutSelectedVal', 'rentSelectedLabel', 'rentSelectedVal', 'complex', 'searchKeyStr', 'searchDTO'];
        common.clearBatchStorage(storageArr)
    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})